public class Demo {

    public static void move (char start, char end){
        System.out.print(start + " --> " + end + " ");
    }

    /**
     *
     * @param n 圆盘个数
     * @param pos1 起始位置
     * @param pos2 中转位置
     * @param pos3 目标位置
     */
    public static void hanio (int n, char pos1 ,char pos2,char pos3){
        //结束递过程的条件
        if(n == 1){
            move(pos1,pos3);
        }else {
            hanio(n-1,pos1,pos3,pos2); //将 n-1 个圆盘 看成一个整体 借助 pos3 位置 移动到 pos2
            move(pos1,pos3);  //将最大最底层的 圆盘 放到 目标位置
            hanio(n-1,pos2,pos1,pos3); // 再将剩下的 n - 1 个 圆盘 从 pos2 借助 pos1 移动到 pos3
        }

    }


    public static void main(String[] args) {
        hanio(1,'A','B','C');
        System.out.println();
        hanio(2,'A','B','C');
        System.out.println();
        hanio(3,'A','B','C');
        System.out.println();
        hanio(4,'A','B','C');
    }
}
